﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Web.Mvc;
using Unijovem.UI.Models;
using Unijovem.Domain;

namespace Unijovem.UI.Controllers
{
    public class PartialViewController : ArquivoController
    {
        public ActionResult SelecionarSessaoArquivoSalvo(string sessao)
        {
            if (Session[sessao].GetType() == typeof(ArquivoModel))
            {
                var model = (ArquivoModel)Session[sessao];

                return Json(new
                            {
                                success = true,
                                imagem = Url.Content(Path.Combine(model.Caminho, model.Nome)),
                                id = model.Id,
                                idExterno = model.IdExterno
                            });
            }
            else
            {
                var models = ((List<ArquivoModel>)Session[sessao]);
                throw new NotImplementedException();
            }
        }

        public ActionResult NewUpload(string queryString, HttpPostedFileBase fileData)
        {
            var queryStringList = queryString.Split(new[] { '|', '?' });
            int idExterno = int.Parse(queryStringList[0]);
            string caminho = queryStringList[1];
            ArquivoModel.TipoArquivo tipo;
            Enum.TryParse(queryStringList[2], out tipo);

            var model = new ArquivoController().SalvarArquivo(fileData, Server.MapPath(caminho), tipo, idExterno);

            return Json(new
                            {
                                success = true,
                                imagem = string.Concat(caminho, "/", model.Nome).Replace("~", string.Empty),
                                id = model.Id,
                                idExterno = model.IdExterno,
                                nomeImagem = model.Nome
                            });
        }

        public ActionResult UploadFotoUsuario()
        {
            return PartialView();
        }

        public ActionResult FotosFlickr(string id)
        {
            return View("FotosFlickr", "_Layout", id);
        }

        public ActionResult ExecutarUploadFotoUsuario(int idUpload, string caminho)
        {
            var pessoa = PessoaLogada;
            var idFotoAntiga = pessoa.IdFoto;
            pessoa.IdFoto = idUpload;
            pessoa.Save(pessoa);
            PessoaLogada = pessoa;

            if (idFotoAntiga.HasValue)
            {
                var arquivo = new Arquivo().SelectById<Arquivo>(idFotoAntiga.Value);
                System.IO.File.Delete(Path.Combine(Server.MapPath(caminho), arquivo.Nome));
                arquivo.Delete<Arquivo>(idFotoAntiga.Value);
            }

            return Json(new
            {
                success = true
            });
        }
    }
}
